1. Field of the Invention
The present invention relates generally to the data processing field and, more particularly, to a decentralized computer implemented method, system and computer readable program code for dynamically optimizing component placement in an event-driven component-oriented network data processing system using evolutionary computation that is subject to changes in function, infrastructure and/or performance.
2. Background of the Invention
Component placement is an important factor in optimizing performance in an event-driven component-oriented network data processing system. Optimal component placement may be defined as placing components (for instance database query operators) in a flow onto an available set of machines in a network such that the placement minimizes the end-to-end latency for each path from producers to consumers of events.
Prior efforts that address the problem of component placement include the use of static centralized placement algorithms that are not responsive to changes that may occur in an event-driven component-oriented network data processing system. Such changes may include, for example:
1. Changes in Function:                a. Producers or consumers may be added or deleted.        b. Components may be added, deleted or modified.        
2. Changes in performance characteristics:                a. Message rates from producers may change.        b. Data may change causing workload on different components to change.        
3. Changes in Infrastructure:                a. Server capacities may change or servers may go on or off line.        b. Links between servers may become congested or unavailable.        
Known approaches to static distributed component placement include “biological” approaches in which component placement is described in terms of activities performed by a colony of ants. Published approaches for component placement in stream processing and complex event processing have not explored ant colony optimization schemes or genetic algorithms. Published work in genetic algorithms for dynamic task scheduling present centralized algorithms or decentralized algorithms that are not applicable to the application requirements of practical event-driven systems.